home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Portable Patmos 1.1 / patmos-src / src / surround.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-01-19  |  1.4 KB  |  81 lines  |  [TEXT/KAHL]

  1. #include <stdio.h>
  2. #include <stdarg.h>
  3.  
  4. static char tmp_str[256];
  5.  
  6. error(char const *fmt, ...)
  7.     {
  8.     va_list ap;
  9.     va_start(ap, fmt);
  10.     (void)vkprintf(tmp_str, fmt, ap);
  11.     cwrite(0, tmp_str, strlen(tmp_str));
  12.     va_end(ap);
  13.     }
  14.  
  15. kprintf(char const *fmt, ...)
  16.     {
  17.     va_list ap;
  18.     va_start(ap, fmt);
  19.     (void)vkprintf(tmp_str, fmt, ap);
  20.     cwrite(0, tmp_str, strlen(tmp_str));
  21.     va_end(ap);
  22.     }
  23.  
  24. void fprintf_filtered(void *stream, const char *fmt, ...)
  25.     {
  26.     va_list ap;
  27.     va_start(ap, fmt);
  28.     (void)vkprintf(&tmp_str[strlen(tmp_str)], fmt, ap);
  29.     va_end(ap);
  30.     }
  31.  
  32. void fputs_filtered(const char *str, void *stream)
  33.     {
  34.     strcat(tmp_str, str);
  35.     }
  36.  
  37. void printf_filtered(const char *fmt, ...)
  38.     {
  39.     va_list ap;
  40.     va_start(ap, fmt);
  41.     (void)vkprintf(&tmp_str[strlen(tmp_str)], fmt, ap);
  42.     va_end(ap);
  43.     }
  44.  
  45. void print_address(long val, void *stream)
  46.     {
  47.     ksprintf(&tmp_str[strlen(tmp_str)], "%8.8X    ", val);
  48.     }
  49.  
  50. long sprint_insn(long addr)
  51.     {
  52.     long off;
  53.     print_address(addr, NULL);
  54. #ifdef KERNEL_DISSASM
  55.     off = print_insn(addr, NULL);
  56.     strcat(tmp_str,"\n");
  57.     return off;
  58. #else
  59.     strcat(tmp_str,"********\n");
  60.     return 2;
  61. #endif
  62.     }
  63.  
  64. void insn_surround(long addr)
  65.     {
  66.     long off1,off2;
  67.     int cnt = 2;
  68.     do
  69.         {
  70.         cnt += 2;
  71.         *tmp_str = 0;
  72.         off1 = sprint_insn(addr-cnt);
  73.         off2 = sprint_insn(addr-cnt+off1);
  74.         }
  75.     while ((cnt != off1+off2) && (cnt < 32));
  76.     if (cnt >= 32) strcpy(tmp_str,"**********\n");
  77.     off1 = sprint_insn(addr);
  78.     sprint_insn(addr+off1);
  79.     cwrite(0, tmp_str, strlen(tmp_str));
  80.     }
  81.